#ifndef DIARY_H
#define DIARY_H
#include <QtWidgets>
#include "tools/Gadget.h"
#include <fstream>
#include <sstream>
#define  diary_info_color    QString("\033[37m%1\033[30m")
#define  diary_success_color QString("\033[32m%1\033[30m")
#define  diary_debug_color   QString("\033[34m%1\033[30m")
#define  diary_warning_color QString("\033[33m%1\033[30m")
#define  diary_error_color   QString("\033[31m%1\033[30m")
#define  diary_white_color   QString("\033[37m%1\033[30m")
#define  bsif                QString("\033[36m%1 && \033[35m%2\033[30m->").arg(__func__, QString::number(__LINE__, 10))
#define  diary(message, msgtype){Diary::layout(message, bsif, msgtype);}
#define  diary2(message1, message2, msgtype)\
{\
    QList<QVariant> vmessage; \
    vmessage << message1 << message2; \
    Diary::layout(vmessage, bsif, msgtype);\
}
#define  diary3(message1, message2,message3,msgtype)\
{\
    QList<QVariant> vmessage; \
    vmessage << message1 << message2 << message3; \
    Diary::layout(vmessage, bsif, msgtype);\
}
#define  diary4(message1, message2, message3, message4, msgtype)\
{\
    QList<QVariant> vmessage; \
    vmessage << message1 << message2 << message3 << message4; \
    Diary::layout(vmessage, bsif, msgtype);\
}
#define  diary5(message1, message2, message3, message4, message5, msgtype)\
{\
    QList<QVariant> vmessage; \
    vmessage << message1 << message2 << message3 << message4 << message5; \
    Diary::layout(vmessage, bsif, msgtype);\
}

#define  diary6(message1, message2, message3, message4, message5, message6, msgtype)\
{\
    QList<QVariant> vmessage; \
    vmessage << message1 << message2 << message3 << message4 << message5 << message6; \
    Diary::layout(vmessage, bsif, msgtype);\
}

class Diary{

public:
    typedef enum {
        Info = 1,
        Success,
        Debug,
        Warning,
        Error,
    } type;

    static void layout(QList<QVariant> vmessage, QString enthetic, type msgtype);

    static void layout(QString message, QString enthetic, type msgtype);

private:

    static void print(const char *message);

    static void write(const char *message);

};

/*
基本颜色（38 以下）：

\033[30m - 黑色
\033[31m - 红色
\033[32m - 绿色
\033[33m - 黄色
\033[34m - 蓝色
\033[35m - 紫色
\033[36m - 青色
\033[37m - 白色
亮色版本（90 以上）：

\033[90m - 亮黑色
\033[91m - 亮红色
\033[92m - 亮绿色
\033[93m - 亮黄色
\033[94m - 亮蓝色
\033[95m - 亮紫色
\033[96m - 亮青色
\033[97m - 亮白色
背景颜色（40 以下）：

\033[40m - 黑色背景
\033[41m - 红色背景
\033[42m - 绿色背景
\033[43m - 黄色背景
\033[44m - 蓝色背景
\033[45m - 紫色背景
\033[46m - 青色背景
\033[47m - 白色背景
亮色背景版本（100 以上）：

\033[100m - 亮黑色背景
\033[101m - 亮红色背景
\033[102m - 亮绿色背景
\033[103m - 亮黄色背景
\033[104m - 亮蓝色背景
\033[105m - 亮紫色背景
\033[106m - 亮青色背景
\033[107m - 亮白色背景
重置颜色：

\033[0m - 重置文本和背景颜色
*/
#endif // DIARY_H
